サーバーレス ETL 処理の使い分けを教えてください
困っていること
サーバーレス ETL 処理を実装予定です。AWS ではサーバーレス ETL 処理の可能なサービスが幾つかあるのですが、どれを選択すれば良いか解りません。判断可能な基準などあれば教えてください。
どう対応すればいいの?
AWS では 参考資料 [1](P9,41,42)記載の通り、軽量級タスクか、重量級タスクであるかを先ずは、サービス選択の判断ポイントにしています。
なお、今回はお困りの内容が「サーバーレス ETL 処理」の条件であるため、以下の AWS サービスが考えられます。
- AWS Lambda
- AWS Glue(Python Shell, Apache Spark, Ray, DataBrew)
- (Amazon EMR)
サーバーレス ETL 処理の使い分けにおいても、前途と同様に先ずはデータの規模やETL処理の中でやりたいことによって使い分けることで選定してください。 対応可能なサーバーレス ETL サービスについては、端的に纏められている 参考資料 [2](P40)と 参考資料 [3](P35)を参考に最適なサービスをご検討ください。
※参考資料 [2](P40)
※参考資料 [3](P35)
補足の考察
AWS Lambda と AWS Glue(Python Shell) の違いでは、AWS Lambda は 15 分の実行時間制限があります。メモリの割り当てでは 参考資料 [1](P43)の通り、AWS Glue(Python Shell)が多く割り当てられています。AWS Glue(Python Shell)は名前の通り Python を使用しますが、AWS Lambda では Go や Java など多くの実行環境を提供しています。
※参考資料 [1](P43)
より大規模な分散処理を実行する場合は Apache Spark や Ray が選択になります。
この他には、大規模データ処理にも流用可能なマネージドサービスの Amazon EMR もあります。AWS Glue には Amazon EMR にはない ETL に特化した様々なビルトイン機能を搭載しています。
一方で、Spark 以外の Hadoop 配布などのフレームワークを利用したい要件、特定のバージョンを指定したい場合や詳細なチューニングをされたい場合は汎用性の高い Amazon EMR が選択肢になるかと思いますが、こちらはサーバーレスではなくワーカーノードという形でクラスターを構築する点を認識してください。
※参考資料 [1](P46,47)
参考資料
[1] AWS で実践!Analytics Modernization ~ETL 編~ AWS ETL サービス適材適所選択のコツ
[2] AWS Glue AWS Black Belt Online Seminar
[3] AWSのETLソリューション紹介